package controller;

import domain.Funcionario;
import java.sql.SQLException;
import repository.FuncionarioDAO;

public class FuncionarioController {
    
    public FuncionarioDAO dao;
    
    public void buscarFuncionario(String nome) throws SQLException{
        String sql;
        if(nome.isEmpty()){
            sql = "select * from funcionario;";
        }else{
            sql = "select * from funcionario where upper(nome) like '%" + nome.toUpperCase() + "%';";
        }
        
        this.dao = new FuncionarioDAO();
        this.dao.read(sql);
    }
    
    public void adicionarFuncionario(Funcionario funcionario) throws SQLException{
        String dataNasc;
        dataNasc = funcionario.getDataNasc().getDate().getYear() + 1900 + "-";
        dataNasc += funcionario.getDataNasc().getDate().getMonth() + 1 + "-";
        dataNasc += funcionario.getDataNasc().getDate().getDate();
        String sql = "insert into funcionario values(default,";
        sql += "'" + funcionario.getNome() + "',";
        sql += "'" + funcionario.getCpf() + "',";
        sql += "'" + funcionario.getRg() + "',";
        sql += "'" + dataNasc+ "',";
        sql += "'" + funcionario.getTelefone()+ "',";
        sql += funcionario.getSalario()+ ",";
        sql += "'" + funcionario.getEndereco()+ "',";
        sql += "'" + funcionario.getCargo()+ "',";
        sql += "'" + funcionario.getNome().split(" ")[0].toLowerCase()+"."+funcionario.getNome().split(" ")[funcionario.getNome().split(" ").length-1].toLowerCase()+ "',";
        sql += "'" + funcionario.getSenha()+ "');";
        this.dao = new FuncionarioDAO();
        this.dao.save(sql);
    }
    
    public void removerFuncionario(int id) throws SQLException{
        String sql = "delete from funcionario where idfuncionario = " + id + ";";
        new FuncionarioDAO().delete(sql);
    }
    
    public void alterarFuncionario(Funcionario funcionario) throws SQLException{
        String dataNasc;
        dataNasc = funcionario.getDataNasc().getDate().getYear() + "-";
        dataNasc += funcionario.getDataNasc().getDate().getMonth() + "-";
        dataNasc += funcionario.getDataNasc().getDate().getDate();
        
        String sql = "update funcionario\n";
        sql += "set nome = '" + funcionario.getNome() + "',";
        sql += "cpf = '" + funcionario.getCpf() + "',";
        sql += "rg = '" + funcionario.getRg() + "',";
        sql += "datanasc = '" + dataNasc+ "',";
        sql += "telefone = '" + funcionario.getTelefone()+ "',";
        sql += "salario = " + funcionario.getSalario()+ ",";
        sql += "endereco = '" + funcionario.getEndereco()+ "',";
        sql += "cargo = '" + funcionario.getCargo()+ "'\n";
        sql += "where idfuncionario = "+funcionario.getId()+";";
        new FuncionarioDAO().update(sql);
    }
    
    public void buscarIdFuncionario(int id) throws SQLException{
        String sql = "select * from funcionario where idfuncionario = " + id + ";";
        dao = new FuncionarioDAO();
        dao.buscarIdFuncionario(sql);
    }
}